<template>
  <a-config-provider :locale="locale">
    <div id="app">
      <div v-if="$store.state.app.loading" id="loader-wrapper">
        <div id="loader"></div>
        <div class="loader-section section-left"></div>
        <div class="loader-section section-right"></div>
        <div class="load_title">正在加载,请耐心等待</div>
      </div>
      <router-view/>
    </div>
  </a-config-provider>
</template>
<script>
import moment from "moment";
import zhCN from "ant-design-vue/lib/locale-provider/zh_CN";
import store from '@/store'
import { message } from 'ant-design-vue'
import { gPostAction } from "@/api/manage";
import { USER_NAME } from "@/store/mutation-types"

export default {
  data() {
    return {
      timer: '',
      locale: zhCN,
    };
  },
  created() {
    // document.title = '高性能云计算数据中心-关键技术与装备';
    document.title = '高效能数据中心调度';

    // 76 整个系统：各模块共性问题 - 多次点击操作按钮，操作提示信息不应同时出现多个提示框
    message.config({
      maxCount: 1,
    });
  },
  mounted() {
    moment.locale('zh-cn', {
      months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
      monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
      weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
      weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
      weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
      longDateFormat: {
        LT: 'HH:mm',
        LTS: 'HH:mm:ss',
        L: 'YYYY-MM-DD',
        LL: 'YYYY年MM月DD日',
        LLL: 'YYYY年MM月DD日Ah点mm分',
        LLLL: 'YYYY年MM月DD日ddddAh点mm分',
        l: 'YYYY-M-D',
        ll: 'YYYY年M月D日',
        lll: 'YYYY年M月D日 HH:mm',
        llll: 'YYYY年M月D日dddd HH:mm'
      },
      meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
      meridiemHour: function (hour, meridiem) {
        if (hour === 12) {
          hour = 0;
        }
        if (meridiem === '凌晨' || meridiem === '早上' ||
          meridiem === '上午') {
          return hour;
        } else if (meridiem === '下午' || meridiem === '晚上') {
          return hour + 12;
        } else {
          // '中午'
          return hour >= 11 ? hour : hour + 12;
        }
      },
      meridiem: function (hour, minute, isLower) {
        const hm = hour * 100 + minute;
        if (hm < 600) {
          return '凌晨';
        } else if (hm < 900) {
          return '早上';
        } else if (hm < 1130) {
          return '上午';
        } else if (hm < 1230) {
          return '中午';
        } else if (hm < 1800) {
          return '下午';
        } else {
          return '晚上';
        }
      },
      calendar: {
        sameDay: '[今天]LT',
        nextDay: '[明天]LT',
        nextWeek: '[下]ddddLT',
        lastDay: '[昨天]LT',
        lastWeek: '[上]ddddLT',
        sameElse: 'L'
      },
      dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
      ordinal: function (number, period) {
        switch (period) {
          case 'd':
          case 'D':
          case 'DDD':
            return number + '日';
          case 'M':
            return number + '月';
          case 'w':
          case 'W':
            return number + '周';
          default:
            return number;
        }
      },
      relativeTime: {
        future: '%s内',
        past: '%s前',
        s: '几秒',
        ss: '%d秒',
        m: '1分钟',
        mm: '%d分钟',
        h: '1小时',
        hh: '%d小时',
        d: '1天',
        dd: '%d天',
        M: '1个月',
        MM: '%d个月',
        y: '1年',
        yy: '%d年'
      },
      week: {
        // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
        dow: 1, // Monday is the first day of the week.
        doy: 4  // The week that contains Jan 4th is the first week of the year.
      }
    })
    if (process.env.VUE_APP_CHECK_LOGIN && parseInt(process.env.VUE_APP_CHECK_LOGIN) > 0) {
      this.timer = setInterval(this.checkLogin, 5000);
    }
  },
  beforeDestroy() {
    if (this.timer) {
      clearInterval(this.timer);
    }
  },
  methods: {
    checkLogin() {
      let router_path = this.$route.path;
      if ('/' !== router_path && '/user/login' !== router_path) {
        gPostAction('/sys/checkLogin').catch((err) => {
          let msg = ''
          if (err.response.data && err.response.data.message) {
            msg = err.response.data.message;
          }
          if (err.response.status === 500 && msg !== 'Token失效，请重新登录') {
            if (process.env.VUE_APP_MODE === "sso") {
              store.dispatch('Logout').then(() => {
                this.$router.push({
                  path: '/skip',
                  query: {
                    type: 'logout',
                    username:  this.$ls.get(USER_NAME)
                  } 
                });
              })      
            } else {
              store.dispatch('Logout').then(() => {
                this.$router.push({ path: '/user/login' })
              })
            }
          }
        })
      }
    }
  }
  // mounted() {
  //   this.$store.commit('SET_LOADING', false)
  // },
};
</script>
<style lang="less">
@import '~@assets/less/common.less';
#app {
  height: 100%;
}
</style>